<?php
// +----------------------------------------------------------------------
// | ThinkBLOG (Build on ThinkPHP)
// +----------------------------------------------------------------------
// | @link ( http://www.yurnero.net )
// +----------------------------------------------------------------------
// | @licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | @author nicholas <nicholasinlove@126.com>
// +----------------------------------------------------------------------
// | $Id: UpdateSessionBehavior.class.php 62 2012-03-19 03:25:48Z nicholasinlove1986@gmail.com $
// +----------------------------------------------------------------------


class AuthCheckBehavior extends Behavior {
	
	protected $options = array(
		'USER_AUTH_ON'			=> true,
		'USER_AUTH_KEY'			=> 'userid',			// 登录标识
		'USER_AUTH_MODEL'		=> 'Users',				// 默认验证数据表模型
		'USER_ROLE_MODEL'		=> 'Roles',				// 默认角色数据表模型
		'USER_AUTH_GATEWAY'		=> '/user/login',		// 默认认证网关
		'NOT_AUTH_MODULE'		=> 'Privilege',			// 默认无需认证模块
		'REQUIRE_AUTH_MODULE'	=> '',					// 默认需要认证模块
		'NOT_AUTH_ACTION'		=> '',					// 默认无需认证操作
		'REQUIRE_AUTH_ACTION'	=> '',					// 默认需要认证操作
	    'GUEST_AUTH_ON'			=> false,				// 是否开启游客授权访问
	    'GUEST_AUTH_ID'			=> 0,					// 游客的用户ID
	);
	
	public function run(&$params) {
		if (C ( 'USER_AUTH_ON' ) && ! in_array ( MODULE_NAME, explode ( ',', C ( 'NOT_AUTH_MODULE' ) ) )) {
			
			if (! Rbac::AccessDecision ()) {
				
				global $_T;
				
				/** 检查登录 */
				if (empty ( $_T ['userid'] ) || empty ( $_T ['roleid'] )) {
					/** 跳转到认证网关 */
					redirect ( U ( C ( 'USER_AUTH_GATEWAY' ), array ('referer' => base64_url_encode ( $_SERVER ['REQUEST_URI'] ) ), '', false ) );
				}
				
				/** 没有权限 抛出错误 */
				tmessage ( '您无权限进行此操作，请联系管理员授权' );
			}
		}
	}
	
}